In [1]:
# clean data for poems
In [2]:
import json
In [3]:
poems = []
with open("../input/poem.json","r") as load_file:
    poems = json.load(load_file)
    print(poems[42])
    print(type(poems[42]))
{'author': '王維', 'paragraphs': ['古墓成蒼嶺,幽宮象紫臺。', '星辰七曜隔,河漢九泉開。', '有海人寧渡,無春雁不廻。', '更聞松韻切,疑是大夫哀。'], 'strains': ['仄仄平平仄,平平仄仄平。', '平平仄仄仄,平仄仄平平。', '仄仄平平仄,平平仄仄平。', '平平平仄仄,平仄仄平平。'], 'title': '過始皇墓'}
<class 'dict'>
In [4]:
print(type(poems[42]["paragraphs"]))
<class 'list'>
In [5]:
print(type(poems))
<class 'list'>
In [6]:
poems_processed = []
for poem in poems:
    for sentence in poem['paragraphs']:
        if ',' not in sentence:
            continue
        if not len(sentence) == 12:
            continue
        s1, s2 = sentence.split(',')
        poems_processed.append(s1)
        poems_processed.append(s2[:-1])
In [7]:
print(poems_processed[:20])
['畫樓吹笛妓', '金椀酒家胡', '錦石稱貞女', '青松學大夫', '脫貂貰桂醑', '射雁與山廚', '聞道高陽會', '愚公谷正愚', '巖壑轉微逕', '雲林隱法堂', '羽人飛奏樂', '天女跪焚香', '竹外峰偏曙', '藤陰水更涼', '欲知禪坐久', '行路長春芳', '不知香積寺', '數里入雲峰', '古木無人逕', '深山何處鐘']
In [8]:
import jieba 
import itertools
from collections import Counter
In [9]:
text = '接下来,莫沃维奇和关一帆又发现了一件令他们激动的事情:他们能看到星空,在各个方向上都能看到。他们清楚地看见,在宇宙的永恒之夜中,银河系在灿烂地延伸着。他们知道自己此时仍身处飞船中,三人都没有穿宇宙服,都在呼吸着飞船中的空气,但在第四个维度上,他们暴露在太空中。作为宇航员,三个人都曾经历过无数次太空行走,但从未感觉到自己在太空中暴露得这样彻底。以往太空行走时,他们至少包裹在宇宙服中,而现在,没有任何东西挡在他们和宇宙之间,周围这展现出无限细节的飞船对星空没有丝毫遮挡,在第四维度上,整个宇宙与飞船也是并列的。'
print(text)
接下来,莫沃维奇和关一帆又发现了一件令他们激动的事情:他们能看到星空,在各个方向上都能看到。他们清楚地看见,在宇宙的永恒之夜中,银河系在灿烂地延伸着。他们知道自己此时仍身处飞船中,三人都没有穿宇宙服,都在呼吸着飞船中的空气,但在第四个维度上,他们暴露在太空中。作为宇航员,三个人都曾经历过无数次太空行走,但从未感觉到自己在太空中暴露得这样彻底。以往太空行走时,他们至少包裹在宇宙服中,而现在,没有任何东西挡在他们和宇宙之间,周围这展现出无限细节的飞船对星空没有丝毫遮挡,在第四维度上,整个宇宙与飞船也是并列的。
In [10]:
text_cut = jieba.cut(text)
text_cut = ' '.join(text_cut)
print(text_cut)
Building prefix dict from the default dictionary ...
Dumping model to file cache /tmp/jieba.cache
Loading model cost 1.064 seconds.
Prefix dict has been built succesfully.
接下来 , 莫沃 维奇 和 关一帆 又 发现 了 一件 令 他们 激动 的 事情 : 他们 能 看到 星空 , 在 各个 方向 上 都 能 看到 。 他们 清楚 地 看见 , 在 宇宙 的 永恒 之 夜中 , 银河系 在 灿烂 地 延伸 着 。 他们 知道 自己 此时 仍 身处 飞船 中 , 三人 都 没有 穿 宇宙服 , 都 在 呼吸 着 飞船 中 的 空气 , 但 在 第四个 维度 上 , 他们 暴露 在 太空 中 。 作为 宇航员 , 三个 人 都 曾 经历 过 无数次 太空行走 , 但 从未 感觉 到 自己 在 太空 中 暴露 得 这样 彻底 。 以往 太空行走 时 , 他们 至少 包裹 在 宇宙服 中 , 而 现在 , 没有 任何 东西 挡 在 他们 和 宇宙 之间 , 周围 这 展现出 无限 细节 的 飞船 对 星空 没有 丝毫 遮挡 , 在 第四 维度 上 , 整个 宇宙 与 飞船 也 是 并列 的 。
In [11]:
l = ['1', '233', '666', '4', '5']
print(' '.join(l))
1 233 666 4 5
In [12]:
jieba.suggest_freq("莫沃维奇", True)
Out[12]:
1
In [13]:
text_cut = jieba.cut(text)
text_cut = '/'.join(text_cut)
print(text_cut)
print(type(text_cut))
接下来/,/莫沃维奇/和/关一帆/又/发现/了/一件/令/他们/激动/的/事情/:/他们/能/看到/星空/,/在/各个/方向/上/都/能/看到/。/他们/清楚/地/看见/,/在/宇宙/的/永恒/之/夜中/,/银河系/在/灿烂/地/延伸/着/。/他们/知道/自己/此时/仍/身处/飞船/中/,/三人/都/没有/穿/宇宙服/,/都/在/呼吸/着/飞船/中/的/空气/,/但/在/第四个/维度/上/,/他们/暴露/在/太空/中/。/作为/宇航员/,/三个/人/都/曾/经历/过/无数次/太空行走/,/但/从未/感觉/到/自己/在/太空/中/暴露/得/这样/彻底/。/以往/太空行走/时/,/他们/至少/包裹/在/宇宙服/中/,/而/现在/,/没有/任何/东西/挡/在/他们/和/宇宙/之间/,/周围/这/展现出/无限/细节/的/飞船/对/星空/没有/丝毫/遮挡/,/在/第四/维度/上/,/整个/宇宙/与/飞船/也/是/并列/的/。
<class 'str'>
In [14]:
def build_vocab(text, vocab_lim):
    word_cnt = Counter(text)
    vocab_inv = [x[0] for x in word_cnt.most_common(vocab_lim)] # 
    vocab_inv = list(sorted(vocab_inv))
    vocab = {x: index for index, x in enumerate(vocab_inv)}
    return vocab, vocab_inv
In [15]:
text_cut_list = text_cut.split('/')
print(text_cut_list)
['接下来', ',', '莫沃维奇', '和', '关一帆', '又', '发现', '了', '一件', '令', '他们', '激动', '的', '事情', ':', '他们', '能', '看到', '星空', ',', '在', '各个', '方向', '上', '都', '能', '看到', '。', '他们', '清楚', '地', '看见', ',', '在', '宇宙', '的', '永恒', '之', '夜中', ',', '银河系', '在', '灿烂', '地', '延伸', '着', '。', '他们', '知道', '自己', '此时', '仍', '身处', '飞船', '中', ',', '三人', '都', '没有', '穿', '宇宙服', ',', '都', '在', '呼吸', '着', '飞船', '中', '的', '空气', ',', '但', '在', '第四个', '维度', '上', ',', '他们', '暴露', '在', '太空', '中', '。', '作为', '宇航员', ',', '三个', '人', '都', '曾', '经历', '过', '无数次', '太空行走', ',', '但', '从未', '感觉', '到', '自己', '在', '太空', '中', '暴露', '得', '这样', '彻底', '。', '以往', '太空行走', '时', ',', '他们', '至少', '包裹', '在', '宇宙服', '中', ',', '而', '现在', ',', '没有', '任何', '东西', '挡', '在', '他们', '和', '宇宙', '之间', ',', '周围', '这', '展现出', '无限', '细节', '的', '飞船', '对', '星空', '没有', '丝毫', '遮挡', ',', '在', '第四', '维度', '上', ',', '整个', '宇宙', '与', '飞船', '也', '是', '并列', '的', '。']
In [16]:
vocab, vocab_inv = build_vocab(text_cut_list, 4000)
In [17]:
print(vocab)
{'。': 0, '一件': 1, '三个': 2, '三人': 3, '上': 4, '与': 5, '东西': 6, '丝毫': 7, '中': 8, '之': 9, '之间': 10, '也': 11, '了': 12, '事情': 13, '人': 14, '仍': 15, '从未': 16, '他们': 17, '令': 18, '以往': 19, '任何': 20, '但': 21, '作为': 22, '关一帆': 23, '到': 24, '包裹': 25, '又': 26, '发现': 27, '各个': 28, '周围': 29, '呼吸': 30, '和': 31, '在': 32, '地': 33, '夜中': 34, '太空': 35, '太空行走': 36, '宇宙': 37, '宇宙服': 38, '宇航员': 39, '对': 40, '展现出': 41, '并列': 42, '延伸': 43, '彻底': 44, '得': 45, '感觉': 46, '挡': 47, '接下来': 48, '整个': 49, '方向': 50, '无数次': 51, '无限': 52, '时': 53, '星空': 54, '是': 55, '暴露': 56, '曾': 57, '此时': 58, '永恒': 59, '没有': 60, '清楚': 61, '激动': 62, '灿烂': 63, '现在': 64, '的': 65, '看到': 66, '看见': 67, '着': 68, '知道': 69, '空气': 70, '穿': 71, '第四': 72, '第四个': 73, '细节': 74, '经历': 75, '维度': 76, '而': 77, '能': 78, '自己': 79, '至少': 80, '莫沃维奇': 81, '身处': 82, '过': 83, '这': 84, '这样': 85, '遮挡': 86, '都': 87, '银河系': 88, '飞船': 89, ',': 90, ':': 91}
In [18]:
num_text_cut = [vocab[word] for word in text_cut_list]
In [19]:
print(num_text_cut)
[48, 90, 81, 31, 23, 26, 27, 12, 1, 18, 17, 62, 65, 13, 91, 17, 78, 66, 54, 90, 32, 28, 50, 4, 87, 78, 66, 0, 17, 61, 33, 67, 90, 32, 37, 65, 59, 9, 34, 90, 88, 32, 63, 33, 43, 68, 0, 17, 69, 79, 58, 15, 82, 89, 8, 90, 3, 87, 60, 71, 38, 90, 87, 32, 30, 68, 89, 8, 65, 70, 90, 21, 32, 73, 76, 4, 90, 17, 56, 32, 35, 8, 0, 22, 39, 90, 2, 14, 87, 57, 75, 83, 51, 36, 90, 21, 16, 46, 24, 79, 32, 35, 8, 56, 45, 85, 44, 0, 19, 36, 53, 90, 17, 80, 25, 32, 38, 8, 90, 77, 64, 90, 60, 20, 6, 47, 32, 17, 31, 37, 10, 90, 29, 84, 41, 52, 74, 65, 89, 40, 54, 60, 7, 86, 90, 32, 72, 76, 4, 90, 49, 37, 5, 89, 11, 55, 42, 65, 0]